package com.itheima.d2_SingleInstance_2;

/**
 * 懒汉单例
 * 实现步骤：
 *          1.创建一个类，将构造器私有
 *          2.定义一个静态变量存储对象
 *          3.提供一个返回单例的方法
 */
public class SingleInstance {
    //私有构造器
    private SingleInstance(){
       //
        // System.out.println("构造器触发");
    }
    //定义一个静态变量存储对象，但是不会立即去创建一个对象
    //public static SingleInstance instance; //null
    //将单例对象私有化更加符合开发中的具体需求
    private static SingleInstance instance; //null

    //提供一个返回单例的方法，可以自动生产，要确保返回的类型和创建时的类型一致
    public static SingleInstance getInstance() {
        if(instance == null){
            /**
             * 判断当前是否是第一次创建对象
             * 是，则会新创建一个SingleInstance的对象，再在外出返回
             * 如果不是，则会将上次创建的对象的地址直接返回
             */
            instance = new SingleInstance();
        }
        return instance;
    }
}
